package com.bw.lib_fan

import android.graphics.Color
import android.os.Build
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.view.Window
import androidx.viewpager2.adapter.FragmentStateAdapter
import androidx.viewpager2.widget.ViewPager2
import com.bw.lib_fan.tab_fragment.SubFragment1
import com.bw.lib_fan.tab_fragment.SubFragment2
import com.google.android.material.tabs.TabLayout
import com.google.android.material.tabs.TabLayoutMediator

/**
 * FirstFragment 是一个包含 TabLayout 和 ViewPager2 的 Fragment。
 * 通过 TabLayout 和 ViewPager2 的联动，用户可以在不同的子 Fragment 之间切换。
 */

class FirstFragment : Fragment() {
    private lateinit var viewPager: ViewPager2
    private lateinit var tabLayout: TabLayout

    /**
     * 创建并返回 Fragment 的视图。
     * 在这里，我们使用 LayoutInflater 将 fragment_first.xml 布局文件转换为 View 对象。
     *
     * @param inflater LayoutInflater 用于将 XML 布局文件转换为 View 对象。
     * @param container 父视图，即这个 Fragment 将要被添加到的 ViewGroup。
     * @param savedInstanceState 保存的实例状态，用于恢复 Fragment 的状态。
     * @return 返回创建的 View 对象。
     */
    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // Inflate the layout for this fragment
        val view= inflater.inflate(R.layout.fragment_first, container, false)
        //设置沉浸式状态栏
        activity?.window?.let { window ->
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                val decorView = window.decorView
                var flags = decorView.systemUiVisibility
                flags = flags or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                flags = flags or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                decorView.systemUiVisibility = flags
                window.statusBarColor = Color.TRANSPARENT
            }
        }
        return view
    }
    /**
     * 在 Fragment 的视图被创建并附加到父视图后调用。
     * 在这里，我们初始化 ViewPager2 和 TabLayout，并设置它们之间的联动。
     *
     * @param view 创建的 View 对象。
     * @param savedInstanceState 保存的实例状态，用于恢复 Fragment 的状态。
     */
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        // 找到 ViewPager2 和 TabLayout 的实例
        viewPager = view.findViewById(R.id.viewPager)
        tabLayout = view.findViewById(R.id.tabLayout)
        // 设置 ViewPager2 的适配器
        viewPager.adapter = object : FragmentStateAdapter(this) {
            // 返回子 Fragment 的数量
            override fun getItemCount(): Int = 2
            // 根据位置创建相应的子 Fragment
            override fun createFragment(position: Int): Fragment {
                return when (position) {
                    0 -> SubFragment1()
                    1 -> SubFragment2()
                    else -> throw IllegalArgumentException("Invalid position")
                }
            }
        }
        // 设置 TabLayout 和 ViewPager2 的联动
        TabLayoutMediator(tabLayout, viewPager) { tab, position ->
            // 设置每个 Tab 的标题
            tab.text = when (position) {
                0 -> "Tab 1"
                1 -> "Tab 2"
                else -> ""
            }
        }.attach()// 将 TabLayoutMediator 附加到 TabLayout 和 ViewPager2 上
    }

}